1. Field of the Invention
The invention relates to a method and system for acquiring a quiesceing set of information associated with a virtual machine.
2. Background Art
Frequently, computers are dedicated to individuals or to specific applications. For example, an individual owns or is assigned his or her own personal computer (PC). Each time a business hires an employee whose job entails access to a computer, a new PC would be purchased and installed for that new hire. In other cases, a PC or server may be used to perform a specific task. For example, a corporation could have a server for hosting the company's web site, another server for handling emails, and yet another server for handling financial transactions. This one-to-one correlation was simple, straightforward, flexible, and readily upgradeable. However, one drawback to this set-up is that it is inefficient from a computer resource perspective.
The inefficiency stems from the fact that most software applications do not fully utilize the full processing potential of the computer upon which that software is installed. The processing power of a computer is largely defined by its interconnected hardware components. However, when creating software, programmers do not know the specific hardware capabilities of the computers upon which their software is to be ultimately installed upon. Consequently, programmers tends to be conservative when creating software in order to ensure that software can run on the vast majority of conventional, contemporary PCs or servers. As a result, software applications do not push the envelope set by hardware constraints. Furthermore, some applications may consume a great deal of processing power, while other computer applications are inherently less computing intensive. When the PC or server is running less computationally intensive applications, much of its hardware resources are underutilized. Furthermore, given hundreds or thousands of computers networked in an enterprise, the cumulative effect of the amount of wasted computing resources adds up.
In an effort to take advantage of all the underutilized computing resources, there have been efforts to design “virtual” machines. The concept of virtualization broadly describes the separation of a resource (e.g., computing resource) and/or request for a service from the underlying physical delivery of that service. In one example, with regards to virtual memory, computer software gains access to more memory than is physically installed, via the background swapping of data to disk storage. Similarly, virtualization techniques is applied to other IT infrastructure layers such as networks, storage, laptop hardware, server hardware, operating systems, and/or applications.
Through virtualization, the virtual infrastructure provides a layer of abstraction between computing, storage, networking hardware, and the applications running on it and enables a more efficient utilization of computing resources. In general, before virtualization, a single computer is associated with a single operating system image. The machine's hardware and software is tightly coupled and running multiple applications on the same machine can create conflict. Moreover, the machine is often underutilized and inflexible, which all leads to an inefficient use of computing resources. In contrast, with virtualization, operating system and applications are no longer tightly coupled to a particular set of hardware. Advantageously, the virtualized infrastructure allows IT administrators to manage pooled resources across an enterprise, creating a more responsive and dynamic environment.
Basically, a virtual machine entails loading a piece of software onto a physical “host” computer so that more than one virtual machine or more than one instance of an operating system can utilize the resources of that host computer. In other words, the virtual software package is loaded onto one or more physical host computers so that the processing resources of the host computers can be shared amongst many different virtual machines or more than one instance of an operating system. By sharing computing resources, virtual machines make more efficient use of existing computers. Moreover, in one example, each instance of an operating system accesses the host computer through its own virtual machine. From the viewpoint of the operating system, it appears as if it is operating off its own computer. Also, users can continue to operate in a manner that they had grown accustomed to in interacting with computers. Thus, rather than buying, installing, and maintaining new computers, companies can simply load virtual machine software to get more leverage off their existing computers. Furthermore, virtual machines do not entail any special training because they run transparently to the user. In addition, virtual machine technology makes it possible to run multiple instances of different operating systems concurrently on the same host or a group of hosts.
However, there is one drawback in exploiting virtual machines to their full potential. Because virtual machines are designed to maximize the most efficient use of the computing resources, there are typically not very much spare computing resources left over. Any spare computing resources are often used to host another virtual machine for another user. It is this very economic efficiency which poses serious issues with certain types of applications. Some applications are run infrequently, but when they do execute, these applications are extremely computing intensive.
For example, backup applications are often used to backup a company's data. The data is backed up periodically and stored in backup files so that if there happens to be a computer crash or failure, important data is not irretrievably lost. Frequently, in order to backup a virtual machine, a consistent subset of the entire running state of the virtual machine is needed. This subset of the state information is referred to as a quiesceing set.
Conventionally, a quiesceing set of state information associated with a virtual machine is obtained by executing a backup application program that quiesces the virtual machine. The quiesceing set of state information, or quiesced state, is then copied and saved. Frequently, the quiesced state used for backup includes primarily data stored in a persistent storage device (e.g. a disk drive). Also, additional data (e.g., caches and application-specific dump functions) may be obtained from a volatile memory. The quiesced state, in the event of a system crash, can be utilized to reconstruct the original state of the virtual machine.
Aside from being utilized to backup virtual machines, a quiesced state can be utilized for a variety of other purposes as well. In one example, a quiesceing set of information can be used for testing an application program. In another example, a quiesceing set of information can be utilized to monitor an application program or a device. Still, in another example, a quiesceing set of information can be used for simulations.
However, acquirement of the quiesced state without appreciably impacting the virtual machine can be difficult. As mentioned, because virtual machines are highly efficient at utilizing computing resources, execution of a backup application can draw on a much larger amount of resources than usual and cause a resource utilization spike that negatively affects the performance of the virtual machine. Specifically, in one example, the execution of a backup application can consume a great deal of computing resources in terms of input/output (I/O) and processing bandwidth. In addition, under conventional approaches, each application may require its own quiesceing module, which adds to the overall computing resource drain. Furthermore, having a quiescing module for each application may also cause administrative overhead for a system administrator as different application specific modules may have to be deployed in different virtual machines.
In the past, when dedicated computers had a thick cushion of unused computing resources, these periodic computer resource intensive applications (e.g., backup application, data mining application, and/or virus scanning application) could execute in the background without disrupting or affecting the user's normal operation. However, with virtual machines, there are typically no spare computing resources to fall back on. Thus, virtual machine users, such as IT administrators, are faced with a dilemma. They could run the periodic applications and have the virtual machines suffer a performance hit. However, this is problematic when dealing with mission critical applications. For example, one would not want to impact the server handling a company's sales orders, even though backing up the sales information is vital. Alternatively, IT administrators could choose to use dedicated computers, but this is wasteful of computing resources.